package wodegua.d28_特殊文件_日志技术;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

/**
 * Properties
 * 是一个Map集合(键值对集合)，但是我们一般不会当集合使用。
 * ●核心作用:Properties是用来代表属性文件的，通过Properties可以读写属性文件里的内容。
 *
 * 使用Properties读取属性文件里的键值对数据
 * 构造器
 * public Properties()      用于构建Properties集合对象(空容器
 * 常用方法
 * public void load(InputStream is)     通过字节输入流，读取属性文件里的键值对数据
 * public void load(Reader reader)      通过字符输入流，读取属性文件里的键值对数据
 * public string getProperty(string key)    根据键获取值(其实就是qet方法的效果)
 * public set<string>stringPropertyNames()      获取全部键的集合(其实就是ketset方法的效果)
 *
 * 使用Properties把键值对数据写出到属性文件里去
 * 构造器
 * public Properties()      用于构建Properties集合对象(空容器)
 * public object setProperty(string key, string value)      保存键值对数据到Properties对象中去。
 * public void store(OutputStream os,string comments)       把键值对数据，通过字节输出流写出到属性文件里去
 * public void store(Writer w,string comments)      把键值对数据，通过字符输出流写出到属性文件里去
 */
public class d2_Properties {
    public static void main(String[] args) throws Exception {
        Properties p = new Properties();
        p.setProperty("张无忌","18");
        p.setProperty("赵敏","20");
        p.setProperty("周芷若","16");
        p.setProperty("金毛狮王","52");
        p.store(new FileWriter("javase/src/users.properties"), "用户属性文件");

        System.out.println(p.getProperty("赵敏"));
        p.load(new FileReader("javase/src/users.properties"));

        Set<String> list = p.stringPropertyNames();
        for (String s : list) {
            System.out.println(s+"--->"+p.getProperty(s));
        }
        System.out.println("--------------------");
        p.forEach((k,v) -> {
            System.out.println(k+"--->"+v);
        });
        if (p.containsKey("金毛狮王")) {
            p.setProperty("金毛狮王","50");
        }
        System.out.println("--------------------");
        p.forEach((k,v) -> {
            System.out.println(k+"--->"+v);
        });
        p.store(new FileWriter("javase/src/users1.properties"),"更新属性文件");
    }
}
